/**
给你一个非负整数数组 nums ，你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标，如果可以，返回 true ；否则，返回 false 。
 */
struct Solution {}
impl Solution {
    pub fn can_jump(nums: Vec<i32>) -> bool {
        let len = nums.len();
        let mut last_index = len - 1;
        for index in 0..(len - 1) {
          let current_index = len - 2 - index;
          let current_num = nums[current_index] as usize;
          if current_index + current_num >= last_index {
            last_index = current_index;
          }
        }
        last_index == 0 
    }
}

pub fn main() {
    let nums1 = vec![2, 3, 1, 1, 4];
    let res1 = Solution::can_jump(nums1);
    println!("res1==> {}", res1);

    let nums2 = vec![3, 2, 1, 0, 4];
    let res2 = Solution::can_jump(nums2);
    println!("res2==> {}", res2);
}
